package com.hsnn.medstgmini.base.std.service;

import java.io.OutputStream;
import java.util.List;
import java.util.Map;

import com.hsnn.medstgmini.base.std.model.form.StdProdDrugInfoForm;
import com.hsnn.medstgmini.sys.model.SysUser;
import com.hsnn.medstgmini.util.Pagination;

/**
 * @category 企业产品库管理
 * @author 蔡春龙
 * @date 2015年8月18日
 */
public interface StdProdDrugInfoManager {

	/**
	 * @category 分页查询企业产品列表
	 * @date 2015年8月18日
	 * @param form
	 * @return
	 */
	Pagination getStdProdDrugInfoList(Pagination page);
	
	/**
	 * @category 分页查询企业产品列表
	 * @date 2015年8月18日
	 * @param form
	 * @return
	 */
	Pagination getMergeProdDrugInfoList(Pagination page);

	/**
	 * @category 根据id查询企业产品详情
	 * @date 2015年8月18日
	 * @param prodId
	 * @return
	 */
	Map<String, Object> getStdProdDrugInfoDetail(String prodId);
	
	/**
	 * @category 根据药品code查询企业产品详情
	 * @date 2015年8月18日
	 * @param prodCode
	 * @return
	 */
	Map<String, Object> getDrugInfoByCode(String drugCode);

	/**
	 * @category 变更状态
	 * @date 2015年8月18日
	 * @param list
	 * @param status
	 */
	int changeStatus(List<StdProdDrugInfoForm> list, Integer status,
			SysUser user);

	/**
	 * @category 分页查询企业产品日志列表
	 * @date 2015年8月18日
	 * @param form
	 * @return
	 */
	Pagination getStdProdDrugInfoLogList(Pagination page);

	/**
	 * @category 根据id查询企业产品 日志详情
	 * @date 2015年8月18日
	 * @param prodId
	 * @return
	 */
	List<Map<String, Object>> getStdProdDrugInfoLogDetail(String logId);

	/**
	 * @category 保存企业产品库
	 * @date 2015年8月19日
	 * @param form
	 * @param user
	 */
	void saveProdDrugInfo(StdProdDrugInfoForm form, SysUser user);

	/**
	 * 
	 * @category 分页查询品规列表，用于新增通用名、通用名英文、剂型、规格
	 * @author 言科
	 * @date 2015年8月19日 Pagination
	 */
	Pagination getSelectQualityspec(Pagination page);

	/**
	 * 
	 * @category 分页查询药理分类
	 * @author 言科
	 * @date 2015年8月19日 Pagination
	 */
	Pagination getSelectPhar(Pagination page);

	/**
	 * 
	 * @category 分页查询生产企业
	 * @author 言科
	 * @date 2015年8月19日 Pagination
	 */
	Pagination getSelectProdComp(Pagination page);

	/**
	 * 
	 * @category 分页查询材质
	 * @author 言科
	 * @date 2015年8月19日 Pagination
	 */
	Pagination getSelectMaterial(Pagination page);

	/**
	 * 
	 * @category 分页查询包装单位
	 * @author 言科
	 * @date 2015年8月19日 Pagination
	 */
	Pagination getSelectUnit(Pagination page);
	
	/**
	 * @category 保存合并
	 * @date 2015年8月21日
	 * @param mergerProdId
	 * @param mergedProdIdList
	 */
	void saveMergeDrugInfo(String mergerProdId, List<StdProdDrugInfoForm> mergedProdIdList, SysUser user);
	
	/**
	 * @category 查询当前产品被谁合并
	 * @date 2015年8月24日
	 * @param form
	 * @param page
	 * @return
	 */
	Pagination getMergerProdDrugInfoLog(Pagination page);
	
	/**
	 * @category 查询当前产品合并了哪些产品
	 * @date 2015年8月24日
	 * @param form
	 * @param page
	 * @return
	 */
	Pagination getMergedProdDrugInfoLogList(Pagination page);
	
	/**
	 * @category 分页查询待审核的企业产品列表
	 * @date 2015年8月18日
	 * @param form
	 * @return
	 */
	Pagination getAuditCompDrugList(Pagination page);
	
	/**
	 * @category 审核企业产品
	 * @date 2015年9月11日
	 * @param form
	 * @param user
	 */
	void auditCompDrug(StdProdDrugInfoForm form, SysUser user);
	void exportExcel(Pagination page,OutputStream os);
}
